Untangle XendRoot and XendLogging by having XendLogging check the global
authoremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Fri, 10 Mar 2006 10:38:15 +0000 (11:38 +0100)
committeremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Fri, 10 Mar 2006 10:38:15 +0000 (11:38 +0100)
params.XEND_DEBUG value itself.  This removes the need for addLogStderr and
removeLogStderr.  Remove the maxBytes and backupCount parameters to init, as
they are unused and we only use the hardcoded values anyway.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
tools/python/xen/xend/XendLogging.py
tools/python/xen/xend/XendRoot.py

index 053bf4703e298f04abc3b1b61f9ed4b90799c98f..f26f912af5bd06a4dc3a58aa0a3ffbc7ac02aed0 100644 (file)
@@ -13,7 +13,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #============================================================================
 # Copyright (C) 2004, 2005 Mike Wray <mike.wray@hp.com>
-# Copyright (C) 2005 XenSource Ltd
+# Copyright (C) 2005, 2006 XenSource Ltd.
 #============================================================================
 
 
@@ -22,9 +22,10 @@ import types
 import logging
 import logging.handlers
 
+from xen.xend.server import params
 
-__all__ = [ 'log', 'init', 'getLogFilename', 'addLogStderr',
-            'removeLogStderr' ]
+
+__all__ = [ 'log', 'init', 'getLogFilename' ]
 
 
 if not 'TRACE' in logging.__dict__:
@@ -38,37 +39,28 @@ if not 'TRACE' in logging.__dict__:
 log = logging.getLogger("xend")
 
 
-DEFAULT_MAX_BYTES = 1 << 20  # 1MB
-DEFAULT_BACKUP_COUNT = 5
+MAX_BYTES = 1 << 20  # 1MB
+BACKUP_COUNT = 5
 
 STDERR_FORMAT = "[%(name)s] %(levelname)s (%(module)s:%(lineno)d) %(message)s"
 LOGFILE_FORMAT = "[%(asctime)s %(name)s] %(levelname)s (%(module)s:%(lineno)d) %(message)s"
 DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
 
 
-stderrHandler = logging.StreamHandler()
-stderrHandler.setFormatter(logging.Formatter(STDERR_FORMAT, DATE_FORMAT))
-
 logfilename = None
 
 
-def init(filename, level=logging.INFO, maxBytes=None, backupCount=None):
-    """Initialise logging. Logs to 'filename' by default, but does not log to
-    stderr unless addLogStderr() is called.
+def init(filename, level):
+    """Initialise logging.  Logs to the given filename, and logs to stderr if
+    XEND_DEBUG is set.
     """
 
     global logfilename
 
     def openFileHandler(fname):
-        return logging.handlers.RotatingFileHandler(fname,
-                                                    mode='a',
-                                                    maxBytes=maxBytes,
-                                                    backupCount=backupCount)
-
-    if not maxBytes:
-        maxBytes = DEFAULT_MAX_BYTES
-    if not backupCount:
-        backupCount = DEFAULT_BACKUP_COUNT
+        return logging.handlers.RotatingFileHandler(fname, mode = 'a',
+                                                    maxBytes = MAX_BYTES,
+                                                    backupCount = BACKUP_COUNT)
 
     # Rather unintuitively, getLevelName will get the number corresponding to
     # a level name, as well as getting the name corresponding to a level
@@ -89,16 +81,12 @@ def init(filename, level=logging.INFO, maxBytes=None, backupCount=None):
     fileHandler.setFormatter(logging.Formatter(LOGFILE_FORMAT, DATE_FORMAT))
     log.addHandler(fileHandler)
 
+    if params.XEND_DEBUG:
+        stderrHandler = logging.StreamHandler()
+        stderrHandler.setFormatter(logging.Formatter(STDERR_FORMAT,
+                                                     DATE_FORMAT))
+        log.addHandler(stderrHandler)
+
 
 def getLogFilename():
     return logfilename
-
-
-def addLogStderr():
-    """Add logging to stderr."""
-    log.addHandler(stderrHandler)
-
-
-def removeLogStderr():
-    """Remove logging to stderr."""
-    log.removeHandler(stderrHandler)
index c806f75e2f29d695a3182ea98efcd761a8caa398..239f128de22739cd4aae91aceb079b842b8f625f 100644 (file)
@@ -102,15 +102,14 @@ class XendRoot:
         """
         print >>sys.stderr, "xend [ERROR]", fmt % args
 
+
     def configure(self):
         self.set_config()
-        logfile = self.get_config_value("logfile", self.logfile_default)
-        loglevel = self.get_config_value("loglevel", self.loglevel_default)
-        XendLogging.init(logfile, level = loglevel)
+        XendLogging.init(self.get_config_value("logfile",
+                                               self.logfile_default),
+                         self.get_config_value("loglevel",
+                                               self.loglevel_default))
 
-        from xen.xend.server import params
-        if params.XEND_DEBUG:
-            XendLogging.addLogStderr()
 
     def set_config(self):
         """If the config file exists, read it. If not, ignore it.